const path = require('path')

function resolve(dir) {
  return path.join(__dirname, dir)
}
// cesium map plugin
const Webpack = require('webpack')
const CopyWebpackPlugin = require('copy-webpack-plugin')

// px-->rem
const px2rem = require('postcss-px2rem')
const postcss = px2rem({
  remUnit: 32 //基准大小 baseSize，需要和rem.js中相同
})

// https://cli.vuejs.org/zh/guide/webpack.html#%E7%AE%80%E5%8D%95%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F

module.exports = {
  //publicPath: '/smartlamp/',
  devServer: {
    // 配置反向代理
    proxy: {
      // 当地址中有/api的时候会触发代理机制
      '/api': {
        // target: 'http://192.168.110.114:9800/',
        //'http://api.hclight.com/smartlamp/',
        target: 'http://36.7.170.39:9883/',
        changeOrigin: true, // 是否跨域
        pathRewrite: {
          '^/api': ''
        }
      }
    },
    open: true
  },
  configureWebpack() {
    return {
      resolve: {
        extensions: ['.js', '.vue', '.json'],
        alias: {
          '@': resolve('src'),
          '@@': resolve('src/assets')
        }
      },
      plugins: [
        new CopyWebpackPlugin({
          patterns: [
            { from: 'node_modules/cesium/Build/Cesium/Workers', to: 'Workers' },
            {
              from: 'node_modules/cesium/Build/Cesium/ThirdParty',
              to: 'ThirdParty'
            },
            { from: 'node_modules/cesium/Build/Cesium/Assets', to: 'Assets' },
            { from: 'node_modules/cesium/Build/Cesium/Widgets', to: 'Widgets' }
          ]
        }),
        new Webpack.DefinePlugin({
          CESIUM_BASE_URL: JSON.stringify('/')
        })
      ],
      module: {},
      performance: {
        hints: 'warning',
        //入口起点的最大体积
        maxEntrypointSize: 500000000,
        //生成文件的最大体积
        maxAssetSize: 300000000,
        //只给出 js 文件的性能提示
        assetFilter: function (assetFilename) {
          return assetFilename.endsWith('.js')
        }
      }
    }
  },
  chainWebpack(config) {
    //修改网页标题
    config.plugin('html').tap((args) => {
      args[0].title = '平潭地下综合管廊运维管理系统'
      return args
    })

    // 设置 svg-sprite-loader
    // config 为 webpack 配置对象
    // config.module 表示创建一个具名规则，以后用来修改规则
    config.module
      // 规则
      .rule('svg')
      // 忽略
      .exclude.add(resolve('src/icons'))
      // 结束
      .end()
    // config.module 表示创建一个具名规则，以后用来修改规则
    config.module
      // 规则
      .rule('icons')
      // 正则，解析 .svg 格式文件
      .test(/\.svg$/)
      // 解析的文件
      .include.add(resolve('src/icons'))
      // 结束
      .end()
      // 新增了一个解析的loader
      .use('svg-sprite-loader')
      // 具体的loader
      .loader('svg-sprite-loader')
      // loader 的配置
      .options({
        symbolId: 'icon-[name]'
      })
      // 结束
      .end()
  },
  css: {
    loaderOptions: {
      postcss: {
        plugins: [postcss]
      }
    }
  }
}
